/*
 * @Author: aggfb 714740235@qq.com
 * @Date: 2024-05-18 14:29:52
 * @LastEditors: aggfb 714740235@qq.com
 * @LastEditTime: 2024-06-08 15:50:34
 * @FilePath: \2.code\label_rack_control\firmware\bsp\bsp_gpio.c
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
#include "bsp_gpio.h"

/**
 * 使能脚 和 方向脚 控制
*/
void bsp_gpio_init(void)
{
#ifdef MCU_TYPE_APM
    GPIO_Config_T  configStruct;
    RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOA);
    RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOB);
    /* 电机使能端口 */
    configStruct.pin = PIN_MOTOR_ENA;
    configStruct.mode = GPIO_MODE_OUT_PP;
    configStruct.speed = GPIO_SPEED_50MHz;
    GPIO_Config(PORT_MOTOR_ENA, &configStruct);
    GPIO_SetBit(PORT_MOTOR_ENA, PIN_MOTOR_ENA);

    /* 方向控制端口 */
    configStruct.pin = PIN_MOTOR_DIR;
    configStruct.mode = GPIO_MODE_OUT_PP;
    configStruct.speed = GPIO_SPEED_50MHz;
    GPIO_Config(PORT_MOTOR_DIR, &configStruct);
    GPIO_ResetBit(PORT_MOTOR_DIR, PIN_MOTOR_DIR);

    /* 运行LED */
    configStruct.pin = GPIO_PIN_5;
    configStruct.mode = GPIO_MODE_OUT_PP;
    configStruct.speed = GPIO_SPEED_50MHz;
    GPIO_Config(GPIOB, &configStruct);
    GPIO_ResetBit(GPIOB, GPIO_PIN_5);

    configStruct.pin = GPIO_PIN_15;
    configStruct.mode = GPIO_MODE_IN_PD;
    configStruct.speed = GPIO_SPEED_50MHz;
    GPIO_Config(GPIOB, &configStruct);
    GPIO_ResetBit(GPIOB, GPIO_PIN_15);
#if 0
    configStruct.pin = GPIO_PIN_1;
    configStruct.mode = GPIO_MODE_IN_PD;
    configStruct.speed = GPIO_SPEED_50MHz;
    GPIO_Config(GPIOA, &configStruct);
    GPIO_ResetBit(GPIOA, GPIO_PIN_1);
#endif
#else
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  
    
    GPIO_InitStructure.GPIO_Pin = PIN_MOTOR_ENA;        
    GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;   
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_Init(PORT_MOTOR_ENA, &GPIO_InitStructure); 
    GPIO_ResetBits(PORT_MOTOR_ENA, PIN_MOTOR_ENA);   

    GPIO_InitStructure.GPIO_Pin = PIN_MOTOR_DIR;        
    GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;   
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_Init(PORT_MOTOR_DIR, &GPIO_InitStructure); 
    GPIO_ResetBits(PORT_MOTOR_DIR, PIN_MOTOR_DIR);   

    GPIO_InitStructure.GPIO_Pin = PIN_MOTOR_PWM;        
    GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;   
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_Init(PORT_MOTOR_PWM, &GPIO_InitStructure); 
    GPIO_ResetBits(PORT_MOTOR_PWM, PIN_MOTOR_PWM);   
#endif

}


void bsp_gpio_led_toggle(void)
{
    GPIO_WriteBitValue(GPIOB, GPIO_PIN_5,(uint8_t)(1 - GPIO_ReadInputBit(GPIOB, GPIO_PIN_5)));
}
